package exception;

/**
 * 异常处理机制中的try-catch
 * 语法:
 * try{
 *      可能出现的异常代码片段
 * }catch(XXXException e){
 *     当try中代码出现了XXXException后，解决办法
 * }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        try {
            //String line = null;
            String line = "";
            System.out.println(line.length());
            System.out.println(line.charAt(0));
//        }catch (NullPointerException e){
//            System.out.println("出现了空指针，并且解决了。");
//        //catch可以定义多个，针对不同异常有不同处理方式时可以分别捕获
//        }catch (StringIndexOutOfBoundsException e){
//            System.out.println("出现了下标越界，并且解决了。");
//        }
        //如果多个异常有相同的处理方式时，可以合并到一个catch中处理
        }catch (NullPointerException|StringIndexOutOfBoundsException e){
            System.out.println("出现了空指针或下标越界的同一处理方式。");
            //捕获某个超类型异常时，所有它的子类型异常都可以被这个catch解决
            //存在继承关系的异常捕获要先在上面捕获子类型，在下面捕获超类型
        }catch (Exception e){
            System.out.println("反正就是出了个错！");
        }

        System.out.println("程序结束了...");
    }
}
